﻿#include "playerwidget.h"
#include "ui_playerwidget.h"

#include <QFile>
#include <QTimer>

PlayerWidget::PlayerWidget(const QString &svd_filename, QWidget *parent)
    : QWidget(parent), ui(new Ui::PlayerWidget), svd_filename_(svd_filename)
{
    ui->setupUi(this);
    showFullScreen();

    QFile file(svd_filename_);
    file.open(QIODevice::ReadOnly);
    auto data = file.readAll();
    file.close();

    QString s;
    for (const auto &c : data)
    {
        if (c == 17)  // 一帧读取完毕
        {
            frames.push_back(s);
            s.clear();
        }
        else
            s.append(word.at(c));
    }

    QTimer *timer = new QTimer(this);
    it = frames.begin();
    connect(timer, &QTimer::timeout, [this]()
    {
        if (it == frames.end())
            it = frames.begin();
    
        ui->screen->setText(*it);
        ++it;
    });
    timer->start(1);

    // 暂停按钮
    connect(ui->btn_pause, &QPushButton::clicked, [this, timer]()
    {
        if (timer->isActive())
            timer->stop();
        else
            timer->start();
    });

    // 退出按钮
    connect(ui->btn_exit, &QPushButton::clicked, [this]()
    {
        close();
    });


//    QString frame = "";
//    bool sw = false;
//    int i = 0;
//    for (const unsigned char &data : video_data)
//    {
//        if (data == '\n')
//        {
//            if (sw)
//            {
//                // 说明连续两个换行
//                frames.push_back(frame);
//                qDebug() << frame;
//                frame.clear();
//                if (++i > 3)
//                    break;
//                continue;
//            }

//            sw = true;
//            frame.push_back("\n");
//        }
//        else
//        {
//            switch (data)
//            {
//            case 0:
//                frame.append(word.at(0));
//                break;
//            case 1:
//                frame.append(word.at(1));
//                break;
//            case 2:
//                frame.append(word.at(2));
//                break;
//            case 3:
//                frame.append(word.at(3));
//                break;
//            case 4:
//                frame.append(word.at(4));
//                break;
//            case 5:
//                frame.append(word.at(5));
//                break;
//            case 6:
//                frame.append(word.at(6));
//                break;
//            case 7:
//                frame.append(word.at(7));
//                break;
//            case 8:
//                frame.append(word.at(8));
//                break;
//            case 9:
//                frame.append(word.at(9));
//                break;
//            case 10:
//                frame.append(word.at(10));
//                break;
//            case 11:
//                frame.append(word.at(11));
//                break;
//            case 12:
//                frame.append(word.at(12));
//                break;
//            case 13:
//                frame.append(word.at(13));
//                break;
//            case 14:
//                frame.append(word.at(14));
//                break;
//            case 15:
//                frame.append(word.at(15));
//                break;
//            }

//            sw = false;
//        }
//    }
}

PlayerWidget::~PlayerWidget()
{
    delete ui;
}
